1. Field of the Invention
The present invention relates generally to an improved data processing system, and in particular, to improving recovery from failures in distributed data processing systems. Still more particularly, the present invention relates to a computer usable program code for accelerating recovery in a message passing interface based distributed computing environment.
2. Description of the Related Art
When a failure occurs in a data processing system, it is desirable to reinitiate the data processing system from a known time of operation in the past. As a part of reinitiating the data processing system, data, processes, application status, and other information is restored to the known time in the past and the system operation recovered from that point in time. The known time is called a checkpoint. In other words, a checkpoint is a view of the data, processes, application statuses, and information in a data processing system at some time in the past.
In order to be able to accomplish a recovery operation from a checkpoint, the data, states, and other information existing in the data processing system at the checkpoint are saved from a memory to a highly available data storage system that can withstand failures, herein called stable storage. Such data, states, and other information at a checkpoint are collectively called checkpoint data.
Typically, checkpoint data is collected and saved at a number of checkpoints as a data processing system continues to operate. In case of a data processing system failure, a user or the system restores the data processing system operation from the most recently saved checkpoint by repopulating the data processing system with the checkpoint data.
In a distributed computing environment, an application may be distributed in such a way that portions of the application can execute on different processors in parallel in the distributed computing environment. A portion of an application executing on a processor may be designed in such a way that the portion can execute as a fully operational application on that processor. An application whose portions can execute in this manner is herein called a distributed application.
According to one method of implementing distributed applications, a portion of the distributed application executing on one processor interacts with other portions executing on other processors using messages. This method of interaction, communication, and computation is implemented using the Message Passing Interface (MPI). A distributed computing environment executing a distributed application by executing portions thereof on different processors, where the portions employ messaging for performing their computations, is herein called an MPI environment.